// 定义需要生成杨辉三角的行数为 4
let numRows = 4;

// 定义 generate 函数，接收一个参数 numRows，表示要生成的杨辉三角的行数
var generate = function (numRows) {
    // 初始化一个空数组 num，用于存储最终生成的杨辉三角
    let num = [];

    // 使用 for 循环遍历从 0 到 numRows - 1 的每一行
    for (let i = 0; i < numRows; i++) {
        // 初始化一个空数组 arr，用于存储当前行的数字
        let arr = [];

        // 处理第一行的情况，第一行只有一个数字 1
        if (i === 0) {
            arr = [1];
        }
        // 处理第二行的情况，第二行有两个数字 1
        else if (i === 1) {
            arr = [1, 1];
        }
        // 处理第三行及以后的情况
        else {
            // 每行的第一个数字总是 1，将其添加到 arr 数组中
            arr.push(1);

            // 使用 for 循环计算当前行中间的数字
            for (let j = 1; j <= i - 1; j++) {
                // 当前位置的数字等于上一行相邻两个数字之和
                arr.push(num[i - 1][j - 1] + num[i - 1][j]);
            }

            // 每行的最后一个数字总是 1，将其添加到 arr 数组中
            arr.push(1);
        }

        // 将当前行的数组 arr 添加到 num 数组中
        num.push(arr);
    }

    // 返回生成的杨辉三角
    return num;
};

// 调用 generate 函数并打印结果
console.log(generate(numRows));


// let numRows = 4;
// var generate = function (numRows) {
//     if (numRows === 1) {
//         return [[1]];
//     }
//     // 递归生成前 numRows - 1 行
//     let prevTriangle = generate(numRows - 1);
//     let prevRow = prevTriangle[prevTriangle.length - 1];
//     let newRow = [1];
//     for (let i = 1; i < prevRow.length; i++) {
//         newRow.push(prevRow[i - 1] + prevRow[i]);
//     }
//     newRow.push(1);
//     prevTriangle.push(newRow);
//     return prevTriangle;
// };
// console.log(generate(numRows));